package com.wmh.baseservice.admin.service;

import com.wmh.baseservice.admin.entity.AdRole;
import com.wmh.baseservice.admin.pojo.vo.role.AddRoleReqVO;
import com.wmh.baseservice.admin.pojo.vo.role.UpdateRoleReqVO;
import com.wmh.baseservice.admin.tools.enums.AdRoleStatus;
import com.wmh.baseservice.common.mybatisplus.methods.CommonService;

import java.util.List;

/**
 * @author mmx generator
 * @since 2021-02-03
 */
public interface AdRoleService extends CommonService<AdRole> {


    /**
     * 添加角色 V2 接口
     * @param reqVO 请求对象
     */
    void addV2(AddRoleReqVO reqVO);

    /**
     * 更新角色 V2接口
     * @param reqVO 请求对象
     */
    void updateV2(UpdateRoleReqVO reqVO);

    /**
     * 删除角色
     * @param ids 角色id列表
     * @return
     */
    void delete(List<Long> ids);

    /**
     * 修改角色状态
     * @param roleId 角色id
     * @param status 状态编号
     */
    void updateStatus(Long roleId, Integer status);

    /**
     * 获取管理员角色信息
     * @param  adId 管理员id
     * @param status 角色状态 正常 冻结 null 的话就是全部获取
     * @return  角色列表
     * */
    List<AdRole> getAdRolesByCache(Long adId, AdRoleStatus status);


    /**
     * 判断用户是否拥有超级管理员角色
     * @param adId 管理员id
     * @return 是否
     * */
    boolean isHasSupperAdmin(Long adId);

    /**
     * 判断列表中是否拥有超级管理员角色
     * @param roleIds 角色编号列表
     * @return 是否
     */
    boolean isHasSupperAdmin(List<Long> roleIds);

}
